diff --git a/.gitignore b/.gitignore
index 6865abf..2f0cfe4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 config.mk
 *~
+*.pc
+!Makefile.pc
diff --git a/Makefile b/Makefile
index 60d4a0f..83b40bb 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,7 @@
 all: config.mk
 	$(MAKE) -C include
 	$(MAKE) -C lib
+	$(MAKE) -f Makefile.pc
 
 config:
 	rm -f config.mk
@@ -12,15 +13,21 @@ config.mk:
 	$(MAKE) -f Makefile.config
 
 clean:
+	touch config.mk
 	$(MAKE) -C version clean
 	$(MAKE) -C test clean
 	$(MAKE) -C lib clean
-	$(MAKE) -C include clean
+	$(MAKE) -f Makefile.pc clean
 	rm -f config.mk
 
 install: config.mk
 	$(MAKE) -C lib install
 	$(MAKE) -C include install
+	$(MAKE) -C test install
+	$(MAKE) -f Makefile.pc install
 
-test: config.mk
+prepare: config.mk
+	$(MAKE) -C lib prepare
+
+test: config.mk prepare
 	$(MAKE) -C test test
diff --git a/Makefile.pc b/Makefile.pc
new file mode 100644
index 0000000..333347a
--- /dev/null
+++ b/Makefile.pc
@@ -0,0 +1,24 @@
+include Makefile.setup
+include config.mk
+
+all:
+	echo "prefix=$(prefix)" > egl.pc
+	echo "libdir=$(prefix)lib/$(libsubdir)/$(private_dir)" >> egl.pc
+	cat egl.pc.in >> egl.pc
+	sed -i "s/MVERSION/${MALI_VERSION}/g" egl.pc
+	echo "prefix=$(prefix)" > gles_cm.pc
+	echo "libdir=$(prefix)lib/$(libsubdir)/$(private_dir)" >> gles_cm.pc
+	cat gles_cm.pc.in >> gles_cm.pc
+	sed -i "s/MVERSION/${MALI_VERSION}/g" gles_cm.pc
+	echo "prefix=$(prefix)" > glesv2.pc
+	echo "libdir=$(prefix)lib/$(libsubdir)/$(private_dir)" >> glesv2.pc
+	cat glesv2.pc.in >> glesv2.pc
+	sed -i "s/MVERSION/${MALI_VERSION}/g" glesv2.pc
+
+install: egl.pc gles_cm.pc glesv2.pc
+	$(MKDIR) $(pkgconfigdir)/pkgconfig
+	$(INSTALL_DATA) $^ $(pkgconfigdir)/pkgconfig
+
+clean:
+	$(RM) egl.pc gles_cm.pc glesv2.pc
+
diff --git a/Makefile.setup b/Makefile.setup
index 9b1ef0d..31da0d2 100644
--- a/Makefile.setup
+++ b/Makefile.setup
@@ -1,6 +1,9 @@
 DESTDIR ?= /
 prefix ?= /usr/
-libdir ?= $(DESTDIR)$(prefix)lib/
+libsubdir ?= 
+private_dir ?= 
+libdir ?= $(DESTDIR)$(prefix)lib/$(libsubdir)/$(private_dir)/
+pkgconfigdir ?= $(DESTDIR)$(prefix)lib/$(libsubdir)/
 includedir ?= $(DESTDIR)$(prefix)/include
 
 INSTALL ?= install
diff --git a/egl.pc.in b/egl.pc.in
new file mode 100644
index 0000000..e5917b0
--- /dev/null
+++ b/egl.pc.in
@@ -0,0 +1,10 @@
+exec_prefix=${prefix}
+includedir=${prefix}/include
+
+Name: egl
+Description: Mali EGL library
+Requires.private:
+Version: MVERSION
+Libs: -L${libdir} -lEGL
+Libs.private: -lm -lpthread -ldl
+Cflags: -I${includedir}
diff --git a/gles_cm.pc.in b/gles_cm.pc.in
new file mode 100644
index 0000000..86f30fb
--- /dev/null
+++ b/gles_cm.pc.in
@@ -0,0 +1,10 @@
+exec_prefix=${prefix}
+includedir=${prefix}/include
+
+Name: gles_cm
+Description: Mali OpenGL ES 1.1 CM library
+Requires.private:
+Version: MVERSION
+Libs: -L${libdir} -lGLES_CM
+Libs.private: -lm -lpthread -ldl
+Cflags: -I${includedir}
diff --git a/glesv2.pc.in b/glesv2.pc.in
new file mode 100644
index 0000000..21cc87b
--- /dev/null
+++ b/glesv2.pc.in
@@ -0,0 +1,10 @@
+exec_prefix=${prefix}
+includedir=${prefix}/include
+
+Name: glesv2
+Description: Mali OpenGL ES 2.0 library
+Requires.private:
+Version: MVERSION
+Libs: -L${libdir} -lGLESv2
+Libs.private: -lm -lpthread -ldl
+Cflags: -I${includedir}
diff --git a/include/GLES/gl.h b/include/GLES/gl.h
index 858f394..a6bb591 100644
--- a/include/GLES/gl.h
+++ b/include/GLES/gl.h
@@ -29,6 +29,7 @@ typedef float  GLfloat;
 typedef float  GLclampf;
 typedef signed int  GLfixed;
 typedef signed int  GLclampx;
+typedef char GLchar;
 
 typedef int * GLintptr;
 typedef int *  GLsizeiptr;
diff --git a/include/GLES2/gl2.h b/include/GLES2/gl2.h
index 59e376c..90d96bb 100644
--- a/include/GLES2/gl2.h
+++ b/include/GLES2/gl2.h
@@ -32,6 +32,7 @@ typedef unsigned int     GLuint;
 typedef khronos_float_t  GLfloat;
 typedef khronos_float_t  GLclampf;
 typedef khronos_int32_t  GLfixed;
+typedef char             GLchar;
 
 /* GL types for handling large vertex buffer objects */
 typedef khronos_intptr_t GLintptr;
diff --git a/lib/Makefile b/lib/Makefile
index 574bc2c..1df2e2e 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -2,6 +2,9 @@ all:
 
 clean:
 
+prepare:
+	$(MAKE) -C mali prepare
+
 install:
 	$(MAKE) -C mali install
 
diff --git a/test/Makefile b/test/Makefile
index 700416e..1fce02f 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,11 +1,15 @@
 include ../Makefile.setup
+include ../config.mk
 
 CFLAGS ?= -Wall
 
 all: test
 
 test: ../config.mk test.c
-	$(CC) $(CFLAGS) -o $@ test.c -lEGL -lGLESv2
+	$(CC) $(CFLAGS) -o $@ test.c -I../include/ -L../lib/mali/$(MALI_VERSION)/$(MALI_LIBS_ABI)/$(MALI_EGL_TYPE)/ -lEGL -lGLESv2 -lX11
+
+install:
+	$(INSTALL) -m 755 test $(DESTDIR)$(prefix)/bin/mali-triangle
 
 clean:
 	rm -f test
